#ifndef __PCIDLL_H
#define __PCIDLL_H

#ifdef __cplusplus
extern "C" {
#endif

/******************************************
 * Basic Type Definitions
 ******************************************/
#if !defined(VOID)
    typedef void                    VOID, *PVOID;
#endif

#if !defined(S8)
    typedef signed char             S8, *PS8;
#endif

#if !defined(U8)
    typedef unsigned char           U8, *PU8;
#endif

#if !defined(S16)
    typedef signed short            S16, *PS16;
#endif

#if !defined(U16)
    typedef unsigned short          U16, *PU16;
#endif

#if !defined(S32)
    typedef signed long             S32, *PS32;
#endif

#if !defined(U32)
    typedef unsigned long           U32, *PU32;
#endif

/********************************
 * Transducer Types
 ********************************/
#define XDCR_NONE 0
#define XDCR_TYPE_STARTSTOP 1
#define XDCR_TYPE_SSI 2
#define XDCR_TYPE_PWM 3
#define XDCR_TYPE_MULTIMAG 4

/********************************
 * Function Prototypes
 ********************************/
S32 __stdcall pci4_available_boards(void);
S32 __stdcall pci4_configure_channel(S32 board, S32 chan, S32 xdcr_type, S32 recircs_ssibits, float gradient_resolution, float scale, float offset);
S32 __stdcall pci4_start(S32 board, S32 chan, S32 recircs_ssibits);
S32 __stdcall pci4_get_status(S32 board, S32 chan);
S32 __stdcall pci4_isready(S32 board, S32 chan);
S32 __stdcall pci4_get_count(S32 board, S32 chan);
S32 __stdcall pci4_auto_count_channel(S32 board, S32 chan, S32 *count);
S32 __stdcall pci4_auto_counts_board(S32 board, S32 *counts);


#ifdef __cplusplus
}
#endif

#endif
